home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / c_asm.arc / C_ASM.DOC next >
Text File  |  1985-11-08  |  3KB  |  60 lines

  1.      INSTRUCTIONS FOR CALLING MACRO-ASSEMBLER FUNCTIONS FROM MS-C LANGUAGE
  2.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3.                              By Bill Dickson
  4.  
  5. 1.  The Assembled function called is a near procedure.
  6.      a. Proc name is lower case prefixed with '_' ( eg: _pname).
  7.      b. Public data is formatted like proc name above.
  8.      c. C calls omit the '_' prefix when declaring or calling.
  9.      d. Use MASM option /MX to preserve case in public and externals.
  10.      e. Use LINK option /DO for MS-DOS segment ordering.
  11.      f. Use LINK option /NOI for no_ignore_case.
  12.  
  13. 2.  Example of C declarations and call. ( ASM function _test )
  14.      a. extern int test(tdata);   /* before all C blocks */
  15.      b. extern int adat;          /* to access ASM _adat */
  16.      c. cdat = test(x);           /* to call ASM proc _test */
  17.  
  18. 3.  MASM declarations to make proc and data (_test, _adat) public.
  19.      a. public  _test, _adat      ; Before prog main body.
  20.  
  21. 4.  Register preservation for C.
  22.      a. All segment registers must be restored.
  23.      b. bp and sp must be restored.
  24.      c. si and di must be restored.
  25.      d. dir flag must be cleared on exit.
  26.  
  27. 5.  Passing parameter (only 1 allowed) back to C.
  28.      a. 16 bit type in AX.
  29.      b. 32 bit type in DX:AX.
  30.      c. Start address (public) of union or struct in AX.
  31.      d. Start address (public) of float or double in AX.
  32.  
  33. 6.  The data segment must be defined as DGROUP (see example).
  34.  
  35. 7.  The data segment must be defined as example listing.
  36.  
  37. 8.  The text segment must be defined as example listing.
  38.  
  39. 9.  Stack segment should not be defined. Use C's stack.
  40.  
  41. 10. Other C segments are available for use by assembly program but
  42.     these are more usefull for an assembly language program calling
  43.     C functions.(Another subject matter!)
  44.  
  45. 11. This discussion pertains to the Microsoft Macro Assembler and
  46.     the Microsoft C Compiler. Included in this ARC file are;
  47.      a. C_ASM.DOC            This text file.
  48.      b. Demo.c               C example source file.
  49.      c. Cadd.asm             Assembler example source file.
  50.      d. Demo.obj             Linkable object module.
  51.      e. Cadd.obj             Linkable object module.
  52.      f. Demo.exe             The executable final result.
  53.  
  54. 12.  I hope this tutorial helps anyone who wishes to use this killer
  55.      combination of C's power and the Macro Assemblers speed. I had
  56.      to sift through tons of pages in 3 manuals to extract this info
  57.      and I hope I can save you some time passing on what I learned.
  58.      Please note that there is no substitute for reading your manual.
  59.  
  60.